规格表是云主机采购里最不容易出错的东西,也是最容易让人放下戒心的东西。核数、内存、硬盘、带宽,一栏一栏写得清清楚楚,两台机器摆在一起,数字完全一样。可真跑起业务以后,一台风平浪静,另一台一到晚上就开始发飘,这种事并不少见。
这篇文章不讨论“怎样买到足够的算力”,那是另一个话题。这里要弄清楚的是:配置相同的云主机,为什么表现会不一样;硬件资源隔离到底隔离了什么;企业在选型时,除了规格以外还应该看哪些东西。
先说几种运维同事常常描述的现象。业务刚上线时一切正常,访问量慢慢涨上去,响应开始变慢;登录服务器一看,CPU使用率并没有明显升高,但应用就是处理得没有以前快。数据库的查询时快时慢,同一条语句今天三十毫秒,明天就变成两百毫秒。到了高峰期,磁盘I/O的波动尤其明显。有时几个应用同时跑起来,各自的表现还不一致,说不清是谁拖了谁。
这些现象背后有一个共同的可能原因:资源竞争。一台物理服务器上往往运行着多台云主机,CPU调度、磁盘队列、网络出口、内存带宽这些底层资源是大家一起用的。邻居跑一个批处理任务,或者某台机器突然被大量访问,分给你的那一份就可能被挤掉一块。更麻烦的是,云主机里的系统只能看到自己“用了多少”,看不到自己“等了多久”,所以才会出现CPU使用率看起来很正常,业务却变慢的局面。这类现象常被称为“邻居干扰”。
云主机并不是一台独立的机器,而是在物理服务器上通过虚拟化层切分出来的虚拟机。物理服务器提供CPU、内存、磁盘和网络,虚拟化层负责把它们分给各台虚拟机。关键在于“怎么分”:CPU可以是多台虚拟机轮流使用同一批物理核心,也可以是给某台虚拟机固定几个核心;内存可以按实际用量动态调配,也可以预先划定;磁盘和网络则可以共用一个资源池,也可以对每台虚拟机设定保障或上限。分法不同,稳定性差别就很大。
通常包括五个层面:CPU计算资源的分配方式,内存的分配与管理边界,存储I/O的性能保障,网络带宽与连接资源,以及不同云主机之间运行环境的隔离,也就是一台出了问题,会不会波及另一台。这五个层面里,任何一处没有隔离好,都可能成为性能波动的来源,不能只看其中一项。
逻辑隔离更多依赖虚拟化层和资源配额来实现:每台云主机有自己的虚拟环境,也有资源使用的上限,彼此看不到对方的数据。但上限不等于保障,宿主机资源吃紧的时候,谁都可能拿不到应得的份额。硬件隔离的思路则是尽量把物理资源直接划给具体的实例,比如固定的CPU核心、预留的内存、有保障的存储通道,让实例的资源下限有依据,而不只是上限有约束。
不过要注意,不同服务商宣传里的“隔离”,含义可能差别很大,有的指的是虚拟化层的隔离,有的指的是资源层面的独立划分。判断一个产品,不能只看有没有“隔离”两个字,要结合具体的技术实现来看:CPU是否超分,内存是否固定,存储有没有性能保障。
资源竞争造成的性能波动,最大的麻烦是不可预期。同一个系统,这一分钟快,下一分钟慢,排查起来又找不到自己这边的问题。隔离做得好,意味着别人的业务量变化对你的影响会小很多,波动的来源更多回到自己的应用本身,排查方向也更清楚。
数据库对资源稳定的依赖尤其明显。一次查询要经过CPU计算、内存缓存和磁盘读写,事务提交还要等日志落盘,任何一个环节的延迟抖动,都会直接放大成接口响应时间的抖动。所以相比CPU的峰值能力,数据库更看重的是磁盘读写性能是否稳定,以及延迟是否可控。
高峰期是资源争抢最容易暴露的时候。但需要说明,资源隔离解决的是“不被别人挤占”的问题,解决不了“自己的配置不够用”的问题。业务高峰时自己的应用同样会吃满资源,所以隔离和合理的容量规划需要配合着做,二者缺一不可。
一次测试里跑出的峰值成绩,并不能说明机器长期的表现。对需要连续运行的业务来说,可预测性比峰值更有价值:它是不是每天、每个时段都能稳定在一个可接受的范围内。选型时,看波动幅度往往比看最高分更有意义。
隔离做得怎么样,没有哪一项参数能直接回答,需要从几个角度交叉验证。下面这张表可以当作考察时的参照,验证方法不复杂,多数在测试期间就能做完。
考察项 | 关注什么 | 可以怎么验证 |
CPU分配 | 是否存在过度分配,能否看到CPU Steal等指标 | 在系统中用top、vmstat查看st值;高峰期持续偏高,说明CPU时间被别的实例占用 |
内存 | 是否有明确的分配和使用边界 | 确认内存是否固定分配;运行中观察是否出现异常的换页或交换分区使用 |
存储性能 | 是否有合理的IOPS、吞吐和延迟保障说明 | 用fio做随机读写测试,用iostat观察await;不同时段重复测,对比结果 |
高峰期响应 | 响应时间能否保持相对稳定 | 在业务真正的高峰时段测,而不是深夜空闲时;看波动范围,不只看平均值 |
实例间竞争 | 不同实例之间是否存在资源竞争 | 同一配置在不同时间的测试结果是否离散;向服务方了解宿主机的分配策略 |
监控与排查 | 是否提供持续监控和性能异常排查 | 控制台是否有历史曲线;出现异常时,服务方能否从宿主机层面协助排查 |
有两点需要补充。第一,不同平台暴露给云主机内部的指标不完全一样,看不到CPU Steal,不能直接当作没有资源争抢,需要结合其他测试一起判断。第二,所有测试都应该多次、分时段进行,一次的结果不足以下结论。
最直观的差别在资源的归属上。独立物理服务器是整台机器给一家使用,CPU、内存、磁盘包括缓存、内存带宽这些底层资源都不与别人共享。硬件资源隔离的云主机,则仍然是在一台共享的宿主机上划分资源,隔离做得再好,也只是把边界划清楚,并不意味着独占整台机器。具体的隔离边界在哪里,要看产品的架构。
其他方面的差别更像是取舍。云主机在管理上更灵活,配置调整、快照备份、迁移都比较快,扩展通常以分钟计;独立服务器则要走采购、上架、装机的流程,周期长得多,硬件出了故障也需要换件或迁移。成本上,独立服务器按整机计价,业务规模不大时容易出现资源闲置,而云主机可以按需要选配。所以两者谈不上谁替代谁,业务对隔离程度的要求、预算和扩展节奏,才是选择的依据。
恒讯科技明确了云主机之间的硬件级隔离,并把集中管理和监控列为性能保障的一部分。产品部署在高性能服务器上,用户可以在CPU、内存、存储和网络几个方面选择配置;存储采用三层存储技术,涉及缓存、沉淀与备份,也与数据保护能力相关。对于关心稳定性的企业,这几点放在一起看会更完整:隔离是底层基础,监控让问题可见,存储机制则关系到数据本身的安全。
业务对响应时间的抖动越敏感、越需要连续运行,就越应该把底层资源分配方式放进选型的考虑。ERP和CRM系统是员工每天都在用的,卡顿几次,抱怨就会直接传到管理层;企业数据库是很多系统的底座,它不稳,上面的应用都会受牵连;7×24小时运行的后台应用没有“低峰期可以将就”的说法;在线交易系统里,响应时间的波动会直接影响成交;高并发业务则会把资源争抢的问题在短时间内放大。
反过来,访问量小、对短暂变慢不敏感的测试环境或展示类站点,没有必要为隔离支付额外的预算。
规格表只能告诉你一台机器有多大,却说不出它在晚上八点高峰期的样子。企业选云主机,核数和内存当然要看,而它们是怎么分到你手上的,长期运行时稳不稳,往往才是业务真正受影响的地方。
Copyright © 2013-2020. All Rights Reserved. 恒讯科技 深圳市恒讯科技有限公司 粤ICP备20052954号 IDC证:B1-20230800.移动站


